#ifndef MESSIONMID_H
#define MESSIONMID_H

#include <QWidget>
#include<QScrollArea>
#include<QLabel>
//不同类型的item
enum ITEMTYPE
{
    SSIONTYPE,
    FRIENDTYPE,
    APPLYTYPE
};

// QScrollArea类似于滚动条类，与一个QWidget 搭配可以实现滚动效果
class messionMid : public QScrollArea
{
    Q_OBJECT
public:
    explicit messionMid(QWidget *parent = nullptr);
  //创建两个函数，增加好友，删除好友
    void clear();
    void addItem(ITEMTYPE type,const QString&id,const QIcon&avatar,const QString&name,const QString&text);
     //通过下标进行选择
    void clicked(int index);
    signals:
private:

    QWidget *container;
};


////////////////////////////////////
/// 实现一个好友会话项目类（包含名字，头像，最后一条对话（或个性签名））
////////////////////////////////////
class   ssionFriendItem : public QWidget
{
     Q_OBJECT
public:
     //构造函数
    ssionFriendItem(QWidget*owner,const QIcon&avatar,const QString&name,const QString&text);
//重写鼠标进入时间
   void mousePressEvent(QMouseEvent*event);

    //QWidget的子类（自定义的类），默认情况下OSS样式不生效，除非做一些特殊处理）
    //特殊处理函数
   void paintEvent(QPaintEvent* event);
   void select();
   void enterEvent(QEnterEvent*event);
   void leaveEvent(QEvent*event);
   virtual void active();
   protected:
   QLabel* messageOrdescription;
  private:
 QWidget *owner;
  bool selected=false;
 protected:
  // 让这个成员被子类访问
  QLabel* messageLabel;

};
////////////////////////////////////
/// 实现一个会话项目类（包含名字，头像，最后一条消息，会话id,）
////////////////////////////////////
class   SsionItem : public ssionFriendItem
{
    Q_OBJECT
public:
    SsionItem(QWidget*owner,const QString&id,const QIcon&avatar,const QString&name,const QString&lastmessage);
    //重写虚函数，会话列表
   virtual void active();
private:
    QString chatMessionId;
    // 最后一条消息的文本预览
    QString text;
};
////////////////////////////////////
/// 实现一个好友项目类（包含名字，头像，最后一条消息，会话id,）
////////////////////////////////////
class FriendItem:public ssionFriendItem
{
     Q_OBJECT
public:
     FriendItem(QWidget*owner,const QString&id,const QIcon&avatar,const QString&name,const QString&description);
    //重写虚函数，好友列表
   virtual void active();
private:
     QString userId;
};
////////////////////////////////////
/// 实现一个好友申请项目类（包含名字，头像，最后一条消息，会话id,）
////////////////////////////////////
 class ApplyItem:public ssionFriendItem
{
     Q_OBJECT
public:
     ApplyItem(QWidget*owner,const QString&userId,const QIcon&avatar,const QString&name);
    virtual  void active() override;
 private:
     QString userId;
};

#endif // MESSIONMID_H
